/*
 * cFilter.h
 *
 *  Created on: Feb 2, 2011
 *      Author: murmeli
 */

#ifndef CFILTER_H_
#define CFILTER_H_

class cPot;

#include <vector>
#include <string>
#include <math.h>
#include <iostream>

using std::string;
using std::vector;
using std::cout;
using std::endl;

class cFilter {
private:
	string name;
	unsigned int N;
	double step;
	vector<double> output;
	vector<double> input;
	double f_tx;
	double f_fx;

public:
	cFilter();
	virtual ~cFilter();
	virtual void calculate(cPot * V)=0;

	double getFilteredPot(double x) const;
    vector<double> getInput() const;
    int getN() const;
    string getName() const;
    std::vector<double> getOutput() const;
    double getStep() const;
    void setInput(vector<double> input);
    void setN(unsigned int N);
    void setName(std::string name);
    void setOutput(vector<double> output);
    void setStep(double step);
    void setf_tx(double value);
    void setf_fx(double value);

    void clear_input();
    void clear_output();
    double getOutputElement(unsigned int i) const;
    double getInputElement(unsigned int i) const;
    unsigned int getOutputSize(void) const;
    double getf_fx(void) const;
    double getf_tx(void) const;

};

#endif /* CFILTER_H_ */
